<?php
/**
 * Controlleur d'index
 * @package bp-clients
 */

 /**
 * Controlleur d'index
 * @package bp-clients
 */

Zend_Loader::loadFile('Bpc/Controllers/ControllerAbstract.php');
class UtilisateursController extends Bpc_Controllers_ControllerAbstract
{
    /**
     * Création du formulaire
     */
    protected function _creerForm()
    {
        // Lecture de l'identifiant
        $this->id = $this->_getParam('id', 0);
        // Creation du formulaire
        $form = new Application_Form_Utilisateur($this->_getParam('id', 0));
        $this->form = $form;  
        $this->view->form = $form;      
    }
    
    /**
     * Traitement des données POST
     */
    public function processAction()
    {
        // Création du formulaire
        $this->_creerForm();
        // Lecture des données
        $request = $this->getRequest();
        $formData = $request->getPost();
        if ($this->form->isValid($formData)) {
        // Données valides
            // Création d'un objet utilisateur
            $utilisateursMapper = new Application_Model_UtilisateursMapper();
            $utilisateur = $utilisateursMapper->newModel($this->form->getValues());
            // Sauvegarde de l'utilisateur
            $id = $utilisateur->save();
            // Redirection vers l'affichage simple de l'utilisateur
            $this->_helper->FlashMessenger('Utilisateur mis à jour');
            $this->_helper->redirector('afficher', null, null, array('id'=>$id));
        } else {
        // Données invalides
            // Renvoie du formulaire
            $this->form->populate($formData);
            if ($this->id>0){
                $this->render('modifier');
            }
            else {
                $this->render('ajouter');
            }
        }    
    }
     
    /**
     * Action index
     */
    public function indexAction()
    {
        return $this->_helper->redirector('lister');
    }

    /**
     * Action Lister
     */
    public function listerAction()
    {
        // Définition des colonnes
        $colonnes = array('Code'    =>'code',
                          'Nom'     =>'nom',
                          'Email'   =>'email'
                         );
		// Afficher inactif?
		$afficherInactif = $this->getRequest()->getParam('inactif', FALSE);
		if ($afficherInactif){
			$colonnes['Actif'] = 'actif';
		}
        // Colonne de tri
        $triCol = $this->getRequest()->getParam('triCol');
        if(!in_array($triCol, $colonnes)){
            $triCol = 'nom';
        }
        // Sens du tri
        $triDir = $this->getRequest()->getParam('triDir', 'asc');
        if(!in_array(strtoupper($triDir), array('ASC', 'DESC'))){
            $triDir='asc';
        }
        // Création du paginator
        $utilisateursMapper = new Application_Model_MapperUtilisateur();
        
        $paginator = $utilisateursMapper->getPaginator($triCol,
                                                       $triDir,
													   $afficherInactif); 
        $paginator->setPageRange(5)      
                  ->setItemCountPerPage($this->_getParam('parpage', 0))
                  ->setCurrentPageNumber($this->_getParam('page'));
        
        // Passage des infos à la vue
        $this->view->colonnes = $colonnes;
        $this->view->triCol= $triCol;
        $this->view->triDir = $triDir;
		$this->view->afficherInactif = $afficherInactif;
        $this->view->paginator = $paginator;
    }


    /**
     * Action ajouter
     */
    public function ajouterAction()
    {
        // Création du formulaire
        $this->_creerForm();
    }
    
    /**
     * Action modifier
     */
    public function modifierAction()
    {
        // Création du formulaire
        $this->_creerForm();
        $utilisateursMapper = new Application_Model_MapperUtilisateur();
		try {
		// Lecture de l'utilisateur
			$utilisateur = $utilisateursMapper->findById($this->id);			
		}
		catch (Exception $e){
		// Utilisateur inconnu
        	$this->_helper->FlashMessenger('Utilisateur inconnu');
			$this->_helper->redirector('lister');
		}
        // Transmission à la vue de l'utilisateur
		$this->view->utilisateur = $utilisateur;
        // Remplissage du form
        $this->form->populate($utilisateur->toArray());
    }

    /**
     * Action afficher
     */
    public function afficherAction()
    {
        // Lecture de l'identifiant
        $id = $this->_getParam('id', 0);
        // Lecture de l'utilisateur
        $utilisateursMapper = new Application_Model_MapperUtilisateur();
        try{
        	$utilisateur = $utilisateursMapper->findById($id);
        }
		catch (Exception $e){
		// Utilisateur inconnu
        	$this->_helper->FlashMessenger('Utilisateur inconnu');
			$this->_helper->redirector('lister');
		}
        // Passage de l'utilisateur à la vue
		$this->view->utilisateur = $utilisateur;
    }
}









